var names = ['abc', 'cba', 'nba', 'dna']

// slice只要给它传入一个start/end,name对于同一个数组来说,它会给我们返回确定的值
// slice函数本身是不会修改原来的数组
// slice函数本身就是一个纯函数
var newNames1 = names.slice(0, 2)
console.log(newNames1); // 
console.log(names);


// splice在执行时,有修改掉调用的数组对象本身,修改的这个操作就是产生的副作用
// splice不是一个纯函数
var newNames2 = names.splice(0, 2) // 返回的是截掉的部分
console.log(newNames2); // [ 'nba', 'dna' ]
console.log(names); // [ 'abc', 'cba' ]